package com.iwhalecloud.bss.kite.cucc.client.api.customerOrderInformation;

import com.github.pagehelper.PageInfo;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpMemberDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpMemberListByGrpReq;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpMemberListByMemReq;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpMemberListReq;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpUserDTO;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryGrpUserListReq;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.QryMemDiscntInfoReq;
import com.iwhalecloud.bss.kite.cucc.client.dto.customerOrderInformation.UserDetailInfoReq;
import com.iwhalecloud.bss.kite.cucc.client.enumerate.UserDetailTagName;
import com.iwhalecloud.bss.kite.cucc.client.vo.custview.CustViewVO;

import java.util.List;
import java.util.Map;

public interface UserCenterClient {

    /**
     * 3.3.	用户信息查询服务
     *
     * @param userDetailInfoReq
     * @return
     */
    Object userDetailInfo(UserDetailInfoReq userDetailInfoReq);

    /**
     * 3.1.	集团成员列表查询
     *
     * @param qryGrpMemberListReq
     * @return
     */
    Object qryGrpMemberList(QryGrpMemberListReq qryGrpMemberListReq);

    PageInfo<QryGrpUserDTO> qryGrpUserList(QryGrpUserListReq qryGrpUserListReq);

    Object qryMemDiscntInfo(QryMemDiscntInfoReq qryMemDiscntInfoReq);

    /**
     * 3.5.群组查成员列表
     * @param qryGrpMemberListByGrpReq
     * @return
     */
    PageInfo<QryGrpMemberDTO> qryGrpMemberListByGrp(QryGrpMemberListByGrpReq qryGrpMemberListByGrpReq);

    //3.6.成员信息查群组成员列表信息
    PageInfo<QryGrpUserDTO> qryGrpMemberListByMem(QryGrpMemberListByMemReq qryGrpMemberListByMemReq);

    CustViewVO qryGroupUserDetails(String memSerialNumber, String userState);

    CustViewVO qryMemberFeeInfo(QryGrpMemberDTO qryGrpMemberDTO);


    List<Map<String, Object>> qryGroupUserInfoDetails(String sceneInstId, String memSerialNumber, String userState, String serviceTypeCode , String isGroup);

    PageInfo<Map> qryGrpMemberListByCust(String sceneInstId, String custId, String memSerialNumber,
        String primaryUserId, String primaryUserName, String primarySerialNumber, String finishState, String curPage, String pageSize);

    String checkSerialNumber(String sceneInstId, String serialNumber, String memSerialNumber,
        List<Map<String, Object>> mapList);

    Map<String, Object> queryMemberUserDetail(boolean isInvalid, String primaryUserId, String memUserId, List<UserDetailTagName> userDetailTagNames);

}
